package com.zh.work.jy;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zh.work.util.jy.AesUtil;
import com.zh.work.util.jy.Base64ImgUtil;
import com.zh.work.util.jy.ClientUtil;
import com.zh.work.util.jy.JYMD5;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.text.SimpleDateFormat;
import java.util.Date;


/**
 * code is far away from bug with the animal protecting
 * ┏┓　　　┏┓
 * ┏┛┻━━━┛┻┓
 * ┃　　　　　　　┃
 * ┃　　　━　　　┃
 * ┃　┳┛　┗┳　┃
 * ┃　　　　　　　┃
 * ┃　　　┻　　　┃
 * ┃　　　　　　　┃
 * ┗━┓　　　┏━┛
 * 　　┃　　　┃神兽保佑
 * 　　┃　　　┃代码无BUG！
 * 　　┃　　　┗━━━┓
 * 　　┃　　　　　　　┣┓
 * 　　┃　　　　　　　┏┛
 * 　　┗┓┓┏━┳┓┏┛
 * 　　　┃┫┫　┃┫┫
 * 　　　┗┻┛　┗┻┛
 *
 * @Description: 银行卡OCR
 * @Author: Liard
 * @Create in: 2020/6/29 10:27
 * @Version: 1.0.1
 */
public class BankCard {
    private static final Logger log = LoggerFactory.getLogger(BankCard.class);

    private static final String strUrl = "https://101.52.254.188:8443/ocr/bankCard/ai";
    private static final String scene_code ="03";//商户应用场景编号
    private static final String pact_no="FHB20200619_001";//协议版本号
    private static final String strLicense ="FBD059066682386DFF869A3281F1D683";//接口授权
    private static final String strAppsecret="7fcc47a4df4b2492157a76ea53c1e0e8";//应用密码


    public static void main(String[] args) {
        String strTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        String pact_sign = JYMD5.MD5Encoder("123"); //自定义用户授权
        //照片转base64后替换字符加密
        String photo = JYMD5.encrypt(Base64ImgUtil.GetImageStr("D:\\bank_card.jpg"));
        String strSys_req_sn = "bank_card_OCR";
        String pact_trade_no ="**协议授权流水号**";//C端用户授权编码

        new BankCard().OCR(strUrl,pact_sign,photo,strSys_req_sn,strTime,
                pact_trade_no);
    }

    public void OCR(String strUrl,String pact_sign,String photo,
                    String strSys_req_sn,String strTime, String pact_trade_no){
        try {
            JSONObject param = new JSONObject();
            param.put("photo", photo);
            JSONObject par = new JSONObject();
            par.put("biz_content", param);
            par.put("license_code", strLicense);
            par.put("scene_code", scene_code);
            par.put("pact_no", pact_no);
            par.put("pact_trade_no", pact_trade_no);
            par.put("pact_sign", pact_sign);
            par.put("sys_req_sn", strSys_req_sn);
            par.put("timestamp", strTime);
            String sign = JYMD5.createSignature(par, strAppsecret);
            par.put("sign", sign);
            par.put("biz_content", param);
            System.out.println(par);
            String result = ClientUtil.post(strUrl,par.toString());
            System.out.println(result);
            //解密详情信息
            JSONObject js = JSON.parseObject(result);
            if (js.getJSONObject("jy_response").getString("data") != null) {
                String data_info = js.getJSONObject("jy_response").getString("data");
                JSONObject info = JSON.parseObject(data_info);
                String  card_number = AesUtil.decrypt(info.get("card_number").toString(),strAppsecret);
                System.out.println("卡号--->"+card_number);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
